using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// Reposition类用于处理游戏中物体的重新定位逻辑
public class Reposition : MonoBehaviour
{
    Collider2D coll;

    private void Awake()
    {
        coll = GetComponent<Collider2D>();
    }

    // 当碰撞体离开触发器时调用
    void OnTriggerExit2D(Collider2D collision)
    {
        // 如果离开的碰撞体不是标签为"Area"的物体，则直接返回，不做处理
        if (!collision.CompareTag("Area"))
            return;

        // 获取玩家的位置和自身的位置
        Vector3 playerPos = GameManager.instance.player.transform.position;
        Vector3 myPos = transform.position;

        // // 计算玩家与自身在x方向和y方向上的距离差
        // float diffX = Mathf.Abs(playerPos.x - myPos.x);
        // float diffY = Mathf.Abs(playerPos.y - myPos.y);

        // // 获取玩家输入的方向
        // Vector3 playerDir = GameManager.instance.player.movement;
        // float dirX = playerDir.x < 0 ? -1 : 1;
        // float dirY = playerDir.y < 0 ? -1 : 1;

        // 根据自身的标签进行不同的处理
        switch (transform.tag)
        {
            // 如果自身是"Ground"标签，则在x和y方向上距离玩家40个单位时将自身重新定位
            case "Ground":
                float diffX = playerPos.x - myPos.x;
                float diffY = playerPos.y - myPos.y;
                float dirX = diffX < 0 ? -1 : 1;
                float dirY = diffY < 0 ? -1 : 1;
                diffX = Mathf.Abs(diffX);
                diffY = Mathf.Abs(diffY);
                if (diffX > diffY)
                {
                    transform.Translate(Vector3.right * dirX * 40);
                }
                else if (diffX < diffY)
                {
                    transform.Translate(Vector3.up * dirY * 40);
                }
                break;

            // 如果自身是"Enemy"标签，重新定位敌人对象的位置，以确保它不会超出游戏区域。
            case "Enemy":
                // if (coll.enabled)
                // {
                //     transform.Translate(playerDir * 20 + new Vector3(Random.Range(-3f, 3f), Random.Range(-3f, 3f), 0));
                // }

                if (coll.enabled)
                {
                    Vector3 dist = playerPos - myPos;
                    Vector3 ran = new Vector3(Random.Range(-3f, 3f), Random.Range(-3f, 3f), 0);
                    transform.Translate(ran + dist * 2);
                }
                break;
        }
    }
}
